import config from '@/config';
import { RepoModel } from '@/models/repo';
import { RepoPageModel } from '@/models/repo-page';
import { pathIsOk } from '@/utils/tools';
import fs from 'fs/promises';
import path from 'path';
import { Socket } from 'socket.io';
import { z } from 'zod';

import EmitTask from '../utils/emitTask';

const addProjectSchema = z.object({
  appId: z
    .array(
      z
        .string({
          invalid_type_error: '应用ID必须是字符串',
          required_error: '应用ID不能为空',
        })
        .min(1, '应用ID不能为空'),
      { invalid_type_error: '应用ID列表必须是数组', required_error: '应用ID列表不能为空' },
    )
    .min(1, '至少需要选择一个应用')
    .default([]),
  name: z
    .string({
      invalid_type_error: '项目名称必须是字符串',
      required_error: '项目名称不能为空',
    })
    .min(1, '项目名称不能为空')
    .max(100, '项目名称不能超过100个字符')
    .transform(val => val?.trim()),
  remark: z
    .string({
      invalid_type_error: '项目描述必须是字符串',
    })
    .max(500, '描述不能超过500个字符')
    .transform(val => val?.trim())
    .default(''),
});

/**
 * @param socket
 * @param data
 * @returns Promise<void>
 */
export default async function (socket: Socket, data: unknown): Promise<void> {
  const emit = new EmitTask(socket, 'add-project');
  emit.start();

  try {
    const validatedData = addProjectSchema.parse(data);
    const { appId, name, remark } = validatedData;
  } catch (err) {}
}
